<?php

require_once 'classes/TypeDeCause.php';
require_once 'SCinterface.php';
require_once 'classes/Message.php';

/*
 * Classe de service CRUD pour manipuler les enregistrements des typeDeCauses
 */
class SCtypedecause{
    
    private $db;

    /**
     *Contructeur créant l'objet pour la connexion à la DB 
     */
    public function __construct() {
        $this->db = new PDO(ACA_DB_DSN, ACA_DB_USER, ACA_DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
        $this->db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }

    /**
    * Ajoute un typeDeCause
    * @param typeDeCause typeDeCause à ajouter
    */
   public function ajouter(TypeDeCause $untypeDeCauseAAjouter) {
       try{
           
           $query =  $this->db->prepare("INSERT INTO typedecause " .
                   "(nom) VALUES(" .
                   ":nom)");

           $query->execute(array(
                   'nom'              => $untypeDeCauseAAjouter->getNom()
               ));

               $query->closeCursor();
       }
       catch(PDOException $e)
        {
            return new Message("typeDeCause non ajouté:".$e->getMessage());
        }
               return $untypeDeCauseAAjouter;
   }

    /**
     * Methode permettant de supprimer un typeDeCause
     * @param typeDeCause typeDeCause à supprimer
     * @return Message
     */
    public function supprimer(TypeDeCause $untypeDeCauseASupprimer){
        try{
        $query = "DELETE FROM cause WHERE nom='".$untypeDeCauseASupprimer->getNom()."';";
                   
                $this->db->query($query);
                $message = new Message("typeDeCause supprimé");
          
                }
                catch(PDOException $e)
        {
            $message = new Message("typeDeCause non supprimé:".$e->getMessage());
        }
               return $message;
    }
   
    /**
     *
     * @param typeDeCause typeDeCauseALister de recherche sous forme d'objet typeDeCause
     * @return un tableau d'objet typeDeCause
     */
    public function lister($typeALister){
        try{
         

            $sql="SELECT * FROM typedecause ";
            $sql_Where="WHERE";
            if($typeALister!=NULL)
            {
                if($typeALister->getId()!=NULL)
                    $sql_Where.=" nom = ".$typeALister->getId()." AND ";
                
            }         
                
            $sql_Where = substr($sql_Where,0,-5); 
            $sql.=$sql_Where." ORDER BY nom;";
            $lesTypesTrouves=NULL;
            $unTypeLu=NULL;
            $result=$this->db->query($sql);
            while($row = $result->fetch(PDO::FETCH_ASSOC))
            {   
                $unTypeLu = new TypeDeCause($row['nom']);
               
                    $lesTypesTrouves[]=$unTypeLu;
            }        
        }
        catch(PDOException $e)
        {
            print($e->getMessage());
            $lesTypesTrouves=NULL;
        }
        return $lesTypesTrouves;
    }

  
}

?>
